package chapter07;

import java.util.HashSet;

public class Java09_Collection_Set {
    public static void main(String[] args) {
        // TODO 集合 - Set
        // HashSet（无序存储）：Hash + Set
        // Hash：哈希算法/散列算法；幂等性算法，当数据相同时计算结果相同
        // 数据进入集合中先进入哈希算法中计算出其对应的索引，再将数据存放在集合索引对应的位置中

        // 构造参数
        /*
            ArrayList ：数组
            LinkedList：链表
         */
        HashSet set = new HashSet<>();

        // TODO 增加数据
        set.add("zhangsan");
        set.add("lisi");
        set.add("wangwu");
        set.add("zhangsan");

        System.out.println(set);    // [lisi, zhangsan, wangwu]
        System.out.println("-----------------------");

        // TODO 修改数据
        // 无法直接修改数据，数据存放的索引是未知的。
        // 要想实现修改则应先删除后修改

        // TODO 删除数据
        set.remove("wangwu");
        System.out.println(set);    // [lisi, zhangsan]
        System.out.println("-----------------------");

        // TODO 查询数据
        // 无法查询具体数据，因为数据是无序存储的，所以无法通过索引查询数据。
        // 想要得到集合中的数据可以通过for循环遍历的方式获取
        for (Object obj : set) {
            System.out.println(obj);
        }

    }
}
